/*****************************************************************************************
 **  Author:dgz master
 **  Contact：jiduxiong@dagongzao.com
 **
 *****************************************************************************************/
//此js文件是用来自定义扩展业务代码，可以扩展一些自定义页面或者重新配置生成的代码
import { h, resolveComponent } from 'vue'
import RouteFoot from '@/views/basproject/Components/RouteFoot.vue'

let extension = {
  components: {
    //查询界面扩展组件
    gridHeader: '',
    gridBody: '',
    gridFooter: RouteFoot,
    //新建、编辑弹出框扩展组件
    modelHeader: '',
    modelBody: '',
    modelRight: '',
    modelFooter: '',
  },
  tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
  buttons: { view: [], box: [], detail: [] }, //扩展的按钮
  methods: {
    //下面这些方法可以保留也可以删除
    onInit() {
      //框架初始化配置前，
      //示例：在按钮的最前面添加一个按钮
      //   this.buttons.unshift({  //也可以用push或者splice方法来修改buttons数组
      //     name: "按钮", //按钮名称
      //     icon: "el-icon-document", //按钮图标：https://element.eleme.cn/#/zh-CN/component/icon
      //     type: "primary", //按钮样式:https://element-plus.gitee.io/zh-CN/component/button.html
      //     //color:"#eee",//自定义按钮颜色
      //     onClick: function () {
      //       this.$Message.success("点击了按钮");
      //     }
      //   });
      //示例：设置修改新建、编辑弹出框字段标签的长度
      // this.boxOptions.labelWidth = 150;
      this.tableHeight = this.$HasChildrenPageHeight
      this.dragPosition = 'bottom'
    },
    onInited() {
      //框架初始化配置后
      //如果要配置明细表,在此方法操作
      //this.detailOptions.columns.forEach(column=>{ });
      let tmp = this.details.find((i) => i.table == 'Bas_RouteControl')
 if(!!tmp) {
       tmp.isDragFlag = true
       tmp.pagination.sortName = 'StepSequence'
       tmp.pagination.order = 'Asc'
 }
      this.createBtnByColumn()
    },
    searchBefore(param) {
      //界面查询前,可以给param.wheres添加查询参数
      //返回false，则不会执行查询
      return true
    },
    searchAfter(result) {
      //查询后，result返回的查询数据,可以在显示到表格前处理表格的值
      return true
    },
    addBefore(formData) {
      //新建保存前formData为对象，包括明细表，可以给给表单设置值，自己输出看formData的值
      return true
    },
    createBtnByColumn() {
      let arr = [
        {
          type: 'warning',
          title: '配置步骤',

          onClick: (row, column, index) => {
            // 跳转新页面
            this.$router.push({
              path: '/process',
              query: {
                RouteNameId: row.RouteNameId,
                RouteName: row.RouteName,
                RouteCode: row.RouteCode,
              },
            })
          },
        },
        {
          type: 'primary',
          title: '复制工艺',

          onClick: (row, column, index) => {
            // 跳转新页面
            this.$refs.table.$refs.table.toggleRowSelection(row, true)
            this.edit({ ...row, copy: true })
          },
        },
      ]
      this.columns.push({
        title: '操作',
        field: '操作',
        width: 120,
        align: 'left',
        fixed: 'right',
        render: this.renderTableDoBtn(arr),
      })
    },
    delBefore(formData) {
      //编辑保存前formData为对象，包括明细表、删除行的Id
      return true
    },
    addAfter(formData) {
      //新建保存前formData为对象，包括明细表，可以给给表单设置值，自己输出看formData的值
      //添加后刷新字典
      this.initDicKeys()
      return true
    },
    updateAfter(formData) {
      this.initDicKeys()
      return true
    },
    delAfter(formData) {
      //编辑保存前formData为对象，包括明细表、删除行的Id
      //添加后刷新字典
      this.initDicKeys()
      return true
    },
    rowClick({ row, column, event }) {
      this.$store.getters.data().MainIdUsageAndControl = row.RouteNameId
      //查询界面table点击行事件
      this.$refs.table.$refs.table.clearSelection(row) //清除当前选中当前行;
      // 触发底部组件的自定义的点击事件
      this.$refs.gridFooter.topRowClick(row)

      setTimeout(() => {
        this.$refs.table.$refs.table.toggleRowSelection(row, true) //单击行时选中当前行;
      }, 200)
      //查询界面点击行事件
      // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
    },
    updateBefore(row, index) {
      const details = row.details
      let tmp = details.find((i) => i.table == 'Bas_RouteControl')
      if (!!tmp && tmp.data.length) {
        tmp.data.forEach((i, index) => {
          i.StepSequence = index + 1
        })
      }
      console.log(this.currentRow, 'dataa1')
      console.log(row, 'dataa2')
      if (this.currentRow.copy) {
        this.copyRouteName(row)
        return false
      } else {
        return true
      }
    },
    copyRouteName(row){
      let Controls = row.details.find((i) => i.table == 'Bas_RouteControl')?.data
      let Usages = row.details.find((i) => i.table == 'Bas_RouteUsage')?.data
      
      // Controls.forEach((i) =>delete i.RouteControlId)
      // Usages.forEach((i) => (delete i.RouteUsageId ))

      let data = {
        ...row.mainData,
        RouteNameId:Number(row.mainData.RouteNameId),
        Controls,
        Usages ,
      }
      this.http.post(this.$api.baseUrl + 'Bas_RouteName/copyRouteName', data).then((r) => {
        this.boxModel = false
        this.search()
      })
    },
    modelOpenAfter(row) {
      //点击编辑、新建按钮弹出框后，可以在此处写逻辑，如，从后台获取数据
      //(1)判断是编辑还是新建操作： this.currentAction=="Add";
      //(2)给弹出框设置默认值
      //(3)this.editFormFields.字段="xxx";
      //如果需要给下拉框设置默认值，请遍历this.editFormOptions找到字段配置对应data属性的key值
      //看不懂就把输出看：console.log(this.editFormOptions)
    },
  },
}
export default extension
